﻿
namespace TimetableCSP.Scheduler.Entities
{
	/// <summary>
	/// A base class for binary constraints.
	/// </summary>
	public abstract class BinaryConstraint : AbstractConstraint
	{
		/// <summary>
		/// Determines whether there's a conflict between the two variables.
		/// </summary>
		/// <param name="a">The first variable.</param>
		/// <param name="b">The second variable.</param>
		/// <param name="conflictingAttributes">
		/// If there's a conflict, then this array holds the names of those attributes that need to be modified in order to solve the conflict.
		/// </param>
		/// <returns>
		///   <c>true</c> if there's a conflict; otherwise, <c>false</c>.
		/// </returns>
		public abstract bool IsConflict(AbstractVariable a, AbstractVariable b, out string[] conflictingAttributes);
	}
}
